package com.leecode.xiehf.page_01;

/**
 * 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。
 * <p>
 * 回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。例如，121 是回文，而 123 不是。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/palindrome-number
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution_0009 {

    public static void main(String[] args) {
        Solution_0009 solution_0009 = new Solution_0009();
        boolean result = solution_0009.isPalindrome(4224);
        System.out.println(result);
    }

    public boolean isPalindrome(int x) {
        // 负数肯定不是回文 10的倍数肯定不是
        if (x < 0 || (x != 0 && x % 10 == 0)) {
            return false;
        }
        // 接下来就是判断是不是回文字符串的逻辑了
        String s = String.valueOf(x);
        int length = s.length();
        for (int i = 0; i < length / 2; i++) {
            if (s.charAt(i) != s.charAt(length - i - 1)) {
                return false;
            }
        }
        return true;
    }

    /**
     * @param x
     * @return
     */
    public boolean isPalindrome2(int x) {
        if (x < 0 || (x != 0 && x % 10 == 0))
            return false;

        int revertNum = 0;
        while (x > revertNum) {
            revertNum = revertNum * 10 + x % 10;
            x /= 10;
        }
        return x == revertNum || x == revertNum / 10;
    }
}
